// Opacity variables are included to prevent breaks in downstream
// components. However they need to be removed prior to 8.0 and
// all components that use them must be updated.

// This file uses RGBA literal values responsibly
// This file uses off-pattern indentation to be more readable

// sass-lint:disable no-color-literals, no-color-keywords, indentation, quotes

@mixin euiSlightShadow($color: $euiShadowColor, $opacity: 0) {
  box-shadow: 0 0.8px 0.8px rgba($color, shadowOpacity(0.04)),
    0 2.3px 2px rgba($color, shadowOpacity(0.03));
}

@mixin euiBottomShadowSmall($color: $euiShadowColor, $opacity: 0) {
  box-shadow: 0 0.7px 1.4px rgba($color, shadowOpacity(0.07)),
    0 1.9px 4px rgba($color, shadowOpacity(0.05)),
    0 4.5px 10px rgba($color, shadowOpacity(0.05)),
    0 15px 32px rgba($color, shadowOpacity(0.04));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowSmall() will be depricated in a future version of EUI.';
  }
}

@mixin euiBottomShadowMedium($color: $euiShadowColor, $opacity: 0) {
  box-shadow: 0 0.9px 4px -1px rgba($color, shadowOpacity(0.08)),
    0 2.6px 8px -1px rgba($color, shadowOpacity(0.06)),
    0 5.7px 12px -1px rgba($color, shadowOpacity(0.05)),
    0 15px 15px -1px rgba($color, shadowOpacity(0.04));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowMedium() will be depricated in a future version of EUI.';
  }
}

// Similar to shadow medium but without the bottom depth. Useful for popovers
// that drop UP rather than DOWN.
@mixin euiBottomShadowFlat($color: $euiShadowColor, $opacity: 0) {
  box-shadow: 0 0 0.8px rgba($color, shadowOpacity(0.06)),
    0 0 2px rgba($color, shadowOpacity(0.04)),
    0 0 5px rgba($color, shadowOpacity(0.04)),
    0 0 17px rgba($color, shadowOpacity(0.03));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowFlat() will be depricated in a future version of EUI.';
  }
}

// adjustBorder allows the border color to match the drop shadow better so that there's better
// distinction between element bounds and the shadow (crisper borders)
@mixin euiBottomShadow(
  $color: $euiShadowColorLarge,
  $opacity: 0,
  $adjustBorders: false // Deprecated in Amsterdam but left for BWC
) {
  box-shadow: 0 1px 5px rgba($color, shadowOpacity(0.1)),
    0 3.6px 13px rgba($color, shadowOpacity(0.07)),
    0 8.4px 23px rgba($color, shadowOpacity(0.06)),
    0 23px 35px rgba($color, shadowOpacity(0.05));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadow() will be depricated in a future version of EUI.';
  }
}

@mixin euiBottomShadowLarge(
  $color: $euiShadowColorLarge,
  $opacity: 0,
  $adjustBorders: false,
  // Deprecated in Amsterdam but left for BWC
  $reverse: false
) {
  @if ($reverse) {
    box-shadow: 0 2.7px -9px rgba($color, shadowOpacity(0.13)),
      0 9.4px -24px rgba($color, shadowOpacity(0.09)),
      0 21.8px -43px rgba($color, shadowOpacity(0.08));
  } @else {
    box-shadow: 0 2.7px 9px rgba($color, shadowOpacity(0.13)),
      0 9.4px 24px rgba($color, shadowOpacity(0.09)),
      0 21.8px 43px rgba($color, shadowOpacity(0.08));
  }

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiBottomShadowLarge() will be depricated in a future version of EUI.';
  }
}

@mixin euiSlightShadowHover($color: $euiShadowColor, $opacity: 0) {
  box-shadow: 0 1px 5px rgba($color, shadowOpacity(0.1)),
    0 3.6px 13px rgba($color, shadowOpacity(0.07)),
    0 8.4px 23px rgba($color, shadowOpacity(0.06)),
    0 23px 35px rgba($color, shadowOpacity(0.05));

  @if ($opacity > 0) {
    @warn 'The $opacity variable of euiSlightShadowHover() will be depricated in a future version of EUI.';
  }
}
